package com.ruoyi.map.service.impl;

import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.map.domain.City;
import com.ruoyi.map.domain.District;
import com.ruoyi.map.domain.Province;
import com.ruoyi.map.mapper.MapMapper;
import com.ruoyi.map.service.MapService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * @author LiSuxuan
 * @date 2021年 08月 27日 15:37
 */
@Service
public class MapServiceImpl implements MapService {

    @Autowired
    private MapMapper mapMapper;

    /**
     * 得到全国行政地图
     *
     * @return list 集合
     */
    @Override
    public List<Province> getAllMap() {
        List<Province> provinceList = mapMapper.selectProvince();
        for (Province provinceInfo : provinceList) {
            String provinceInfoCode = provinceInfo.getCode().toString().substring(0, 2);
            List<City> cityList = mapMapper.selectCity(provinceInfoCode);
            provinceInfo.setCityList(cityList);
            for (City city : cityList) {
                String districtCode = city.getCode().toString().substring(0, 4);
                List<District> districtList = mapMapper.selectDistrict(isDirectCity(districtCode));
                city.setDistrictList(districtList);
            }
        }
        return provinceList;
    }

    /**
     * 反推 省市区 地图
     *
     * @param codes district-code
     * @return 列表
     */
    @Override
    public List<Province> getOwnMap(List<Integer> codes) {
        if (codes.size() == 0) {
            return null;
        }
        List<Province> provinces = new ArrayList<Province>();
        for (Integer code : codes) {
            String provinceCode = code.toString().substring(0, 2);
//            if (provinces.contains())

        }
        return null;
    }

    /**
     * 判断是否是直辖市
     * 直辖市 市级代码 99 替换为01; 例如 ： 北京市辖区 1199
     *
     * @param code 行政代码
     * @return 结果
     */
    private static String isDirectCity(String code) {
        if (code.isEmpty()) {
            return null;
        }
        String result = code;
        String temp = "99";
        // 检查第3位和第四位 判断是不是直辖市，若是替换为01
        if (code.substring(2, 4).equals(temp)) {
            result = code.replace("99", "01");
        }
        return result;
    }
}
